
import { forGetFun1 } from '@/components/TableSearch/js/forFun.js';
//1.1定义一个控制子组件大小、样式、位置，数据的数组变量，用来动态设置style的
export const searchObj = ref({ 
   isshowsearch: false, 
   x: '300px', 
   y: '300px', 
   height: '300px', 
   width: '400px', 
   data: [], 
   tableTitle: [] ,
   dataCell:[],
   inputValue:''
}) ;
// 1.2定义一个修改数组变量的方法isShowSearchFun，该方法在输入框值变化的时候触发，
//然后给搜索框子组件传递坐标、大小、数据、表头名称等并显示这个组件 。isshow,inputX,inputY,zhi,searchW,searchH 是否显示，横坐标，纵坐标，搜索界面输入的查询值，宽度 ，高度
const isShowSearchFun = (isshow, inputX, inputY, searchW, searchH, data, tableTitle,dataCell,inputValue ) => {
   searchObj.value.isshowsearch = isshow;
   searchObj.value.x = inputX;
   searchObj.value.y = inputY;
   searchObj.value.width = searchW;
   searchObj.value.height = searchH;
   //data是搜索框里面要显示的数据源
   searchObj.value.data = data;
   //tableTitle是搜索框框里面要显示的表头
   searchObj.value.tableTitle = tableTitle;
   searchObj.value.dataCell = dataCell;
   searchObj.value.inputValue = inputValue;
   
};

let isshowu = false;
//定义一个oldvalue存上次的值，因为输入法在中文状态的时候，输入的时候值还没到输入框
// 界面的时候就会传入一个空格，然后就会触发一下change事件， 所以要记录上次的值，然后用
// 后面的值去掉空格8后和上次的值比较，看看是不是输入中文默认加空格导致的，如果是就不触发
let oldvalue = '!';
// 1.3定义一个输入框change事件shuruchange=(value,yuanshuicd,row) ，当输入框值变化的时候触
//发 @change=" (event ) => shuruchange(event,'yuanshuicd',row)  其中 yuanshuicd是输入框的id。
//data1是数据源，data2 是列名存的要与输入值进行匹配的列名
//type是各种样式的搜索框的类别1是原始的，2是自带输入框的
//guolu是有些输入界面要选一下下拉类型，一个交易返回两种类型的数据，要根据选的下拉类型，进行筛选过滤，0代表不过滤，1代表过滤
export const shuruchange = (value, yuanshuicd, row, tableRef, dataSource, dataCell,datalistlabel,type,guolu ) => {
   //获取此时输入值的行号，进而获取数组的序号
   // console.log(row);
   // console.log(value.value.trim() + "++");
   dianjidedanyuangehangshu = tableRef.getRowSeq(row) - 1
   if(guolu==1) {
      // console.log(dataSource);
      // console.log(dataSource[0].lx);
      // console.log( row.lb);
      dataSource=dataSource = dataSource.filter(item => item.lx == row.lb); 
      //console.log(dataSource);
   }
         oldvalue = value.value; 
         if (value.value.trim() != '') {
            //变量存储根据id获得的需要弹搜索框的元素对象
            let danyuangeobj = document.getElementById(yuanshuicd)
            //变量改成显示状态再下面传给搜索框
            isshowu = true
            //给搜索框传显示变量和坐标
            let inputX = danyuangeobj.getBoundingClientRect().x;
            let inputY = danyuangeobj.getBoundingClientRect().y;
            //ws和hs是搜索框的宽高
            let searchW = 640;
            let searchH = 400;
            //hsshurkuang是输入框的高度
            let inputH = danyuangeobj.getBoundingClientRect().height
            //获取浏览器视窗的宽度和高度
            let browserWidth = document.documentElement.clientWidth
            let browserHidth = document.documentElement.clientHeight
            if(type==1){
               if (browserWidth - inputX > searchW && browserHidth - inputY > searchH) {
               // let a=data 
               //这是右下角
               datalist = forGetFun1(value.value, dataSource, dataCell);
               console.log('往子传的data');
               console.log(datalist);
               isShowSearchFun(isshowu, inputX,
               inputY + inputH, searchW, searchH, datalist, datalistlabel,dataCell, value.value );
            }
            else if (browserWidth - inputX > searchW && browserHidth - inputY < searchH) {
               //这是右上角
               datalist = forGetFun1(value.value, dataSource, dataCell);
               isShowSearchFun(isshowu, inputX,
                  inputY - searchH, searchW, searchH, datalist, datalistlabel,dataCell, value.value );
            }
            else if (browserWidth - inputX < searchW && browserHidth - inputY > searchH) {
               datalist = forGetFun1(value.value, dataSource, dataCell);
               isShowSearchFun(isshowu,browserWidth - searchW,
                  inputY + inputH, searchW, searchH, datalist, datalistlabel,dataCell, value.value );
            }
            else if (browserWidth - inputX < searchW && browserHidth - inputY < searchH) {
               datalist = forGetFun1(value.value, dataSource, dataCell);
               isShowSearchFun(isshowu, browserWidth - searchW,
                  inputY - searchH, searchW, searchH, datalist, datalistlabel,dataCell, value.value );
            }
         }
            if(type==2){
               //右下***********************
               if (browserWidth - inputX > searchW && browserHidth - inputY > searchH) {    
               isShowSearchFun(isshowu, inputX,
               inputY + inputH, searchW, searchH, dataSource, datalistlabel,dataCell , value.value);
            }
                //右上***********************
            else if (browserWidth - inputX > searchW && browserHidth - inputY < searchH) {
               isShowSearchFun(isshowu, inputX,
               inputY - searchH, searchW, searchH, dataSource, datalistlabel,dataCell, value.value );
            }
            else if (browserWidth - inputX < searchW && browserHidth - inputY > searchH) {
               //右下靠左移***********************
               //如果浏览器减钱输入框的横坐标剩余的宽度小于搜索框的宽度，就让搜索框往输入框的左侧移动，右侧低拢视窗边缘
               isShowSearchFun(isshowu,browserWidth - searchW,
                  inputY + inputH, searchW, searchH, dataSource, datalistlabel,dataCell, value.value );
               }
            else if (browserWidth - inputX < searchW && browserHidth - inputY < searchH) {
               //右下靠左移靠下移***********************
               isShowSearchFun(isshowu,  browserWidth - searchW,
                  inputY - searchH, searchW, searchH, dataSource, datalistlabel,dataCell, value.value );
            }
         }           
      }
         else {
            isshowu = false
            isShowSearchFun(isshowu, 0,0, 0, 0, datalist, datalistlabel,dataCell, value.value );
   
         }
};
//1.4父组件的关闭方法，在子组件触发了close关闭方法后，执行这个方法
export const toggleShow = () => {
   searchObj.value.isshowsearch = false;
   currentX.value=0;
   currentY.value=0;
   startX.value=0;
   startY.value=0;
   searchObj.value.x=0;
   searchObj.value.y=0;
   // 这里要把搜索框初始值归0，不然点击的时候要条一下
};

//A定义一个数据源数组变量，记录搜索框里面要显示的数据源，并传给搜索框
let datalist = ref([]);
// //B定义一个表头数组变量，记录搜索框里面要显示的表头，和每列的宽度，并传给搜索框
// let datalistlabel = ref([
//    { value: 'jm', label: '简码', widths: '14%' },
//    { value: 'mc1', label: '名称', widths: '25%' },
//    { value: 'rybm', label: '单价', widths: '25%' },
//    { value: 'jldw', label: '单位', widths: '25%' }
// ]);

//在change事件触发的时候把点击的行号记录在dianjidedanyuangehangshu变量里面，以免弹窗搜索框后，正在输入值的时候，去点击其他行，导致点击的行号不对。
export let dianjidedanyuangehangshu = 0;
export const currentX = ref(0);
export const currentY = ref(0);


